R语言学习笔记:dplyr程序包
安装
install.packages("dplyr")
调用
> library(dplyr)应用实例数据:飞机航班数据
> install.packages("hflights")> library(hflights)浏览数据
> View(hflights)本文试图对该dplyr
包的一些基础且常用的功能做简要介绍。主要包括:
变量筛选函数
select
记录筛选函数
filter
排序函数
arrange
变形(计算)函数
mutate
汇总函数
summarize
分组函数
group_by
多步操作连接符
%>%
随机抽样函数
sample_n
,sample_frac
select 用于选择变量
> select(hflights_df,Year,Month,DayOfWeek) # A tibble: 227,496 x 3 Year Month DayOfWeek * <int> <int> <int> 1 2011 1 6 2 2011 1 7 3 2011 1 1 4 2011 1 2 5 2011 1 3 6 2011 1 4 7 2011 1 5 8 2011 1 6 9 2011 1 7 10 2011 1 1 # ... with 227,486 more rows > select(hflights_df,Year:ArrTime) # A tibble: 227,496 x 6 Year Month DayofMonth DayOfWeek DepTime ArrTime * <int> <int> <int> <int> <int> <int> 1 2011 1 1 6 1400 1500 2 2011 1 2 7 1401 1501 3 2011 1 3 1 1352 1502 4 2011 1 4 2 1403 1513 5 2011 1 5 3 1405 1507 6 2011 1 6 4 1359 1503 7 2011 1 7 5 1359 1509 8 2011 1 8 6 1355 1454 9 2011 1 9 7 1443 1554 10 2011 1 10 1 1443 1553 # ... with 227,486 more rows除了选择变量,也可以删除指定的变量
> select(hflights_df,-Year,-DayOfWeek,-DayofMonth,-TailNum)> select(hflights_df,-(Year:AirTime))filter筛选记录
选择2011年1月而且起飞时间为1400的所有数据记录
> filter(hflights_df,Year==2011,Month==1,DepTime==1400)等同于,&代表并且的意思
> filter(hflights_df,Year==2011 & Month==1 & DepTime==1400)'或'的关系用|符号表示。选择起飞时间为1400或者1430的航班,且UniqueCarrier为'AA'
> filter(hflights_df,Year==2011 & Month==1 & (DepTime==1400 | DepTime==1430) & UniqueCarrier=="AA")arrange 按照某列进行排序,默认为升序,可以使用desc()进行降序排列。
> y<-select(hflights_df,Year,DepTime,FlightNum) > arrange(y,DepTime) # A tibble: 227,496 x 3 Year DepTime FlightNum <int> <int> <int> 1 2011 1 1542 2 2011 1 1542 3 2011 1 1542 4 2011 1 1542 5 2011 1 4116 6 2011 1 1563 7 2011 1 1109 8 2011 2 1212 9 2011 2 1563 10 2011 3 1542 # ... with 227,486 more rows > arrange(y,desc(DepTime)) #使用降序 # A tibble: 227,496 x 3 Year DepTime FlightNum <int> <int> <int> 1 2011 2400 2456 2 2011 2359 1542 3 2011 2359 426 4 2011 2359 2450 5 2011 2359 1374 6 2011 2359 2659 7 2011 2359 2800 8 2011 2359 794 9 2011 2359 1126 10 2011 2359 4584 # ... with 227,486 more rowsmutate
对已有列进行数据运算并添加为新列:
mutate(hflights_df, gain = ArrDelay - DepDelay, speed = Distance / AirTime * 60)
summarise
对数据框调用其它函数进行汇总操作, 返回一维的结果:
summarise(hflights_df, delay = mean(DepDelay, na.rm = TRUE))
group_by函数实现对数据进行分组,结合summarize函数,可以对分组数据进行汇总统计。
#按照航空公司分组进行汇总
summarise(group_by(tbl_hflights, UniqueCarrier),
m = mean(AirTime,na.rm = TRUE),
sd = sd(AirTime,na.rm = TRUE),
cnt = n(),
me = median(AirTime,na.rm = TRUE))
%>%,多步骤连接符
dplyr包里还新引进了一个操作符,%>%, 使用时把数据集名作为开头, 然后依次对此数据进行多步操作。
这种运算符的编写方式使得编程者可以按数据处理时的思路写代码, 一步一步操作不断叠加,在程序上就可以非常清晰的体现数据处理的步骤与背后的逻辑。
挑选随机样本sample_n, sample_frac
sample_n随机选出指定个数(样本容量)的样本数;sample_frac随机选出指定百分比(占整个数据集总体百分比)的样本数。
加入临床科研讨论群,请加13738062354或者pj1989zzj为好友,注明加群,就会拉你进群了。